package com.cy.pet.auth.config;

/**
 * @description:
 * @author: LiuXingYu
 * @date: 2021/9/30 17:18
 */

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.oauth2.provider.token.TokenStore;
import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
import org.springframework.security.oauth2.provider.token.store.JwtTokenStore;

/**
 * 创建Jwt令牌配置类，基于这个类实现令牌对象的创建和解析
 * JWT令牌的构成有三部分构成
 * 1.HEADER 头部信息
 * 2.PAYLOAD 数据类型-用户信息，权限信息
 * 3.SIGNATURE 签名信息-对header和payload部分进行加密
 */
@Configuration
public class TokenConfig {
    //解密口令，令牌签发口令
    //当客户端在执行登录时，假如有携带这个信息，认证服务器可以签发令牌
    private String SIGNING_KEY = "auth";
    //构建令牌生成器对象
    @Bean
    public TokenStore tokenStore(){
        return new JwtTokenStore(jwtAccessTokenConverter());
    }
    //构建令牌转换器对象，基于此对象创建令牌，解析令牌
    @Bean
    public JwtAccessTokenConverter jwtAccessTokenConverter(){
        JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
        //设置签名key
        converter.setSigningKey(SIGNING_KEY);
        return converter;
    }
}
